package com.jwmp.rbac.service;

import com.jwmp.core.util.PageResult;
import com.jwmp.core.util.QueryObject;
import com.jwmp.rbac.domain.Permission;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface IPermissionService {
    /**
     * 根据包名扫描 @SetPermission 注解，加载权限到数据库中，只加入新的，旧的不重新加入
     * @param loadPermissionPackageName
     */
    void loadPremissionToDB(String loadPermissionPackageName);

    /**
     * 为某个模块，批量插入权限
     * @param moduleId
     * @param list
     */
    void insertBath(Long moduleId, List<Permission> list) ;

    /**
     * 查询所有的权限基本信息，不包括模块
     * @return
     */
    List<Permission> selectBaseList();

    /**
     * 查询所有的权限，包括权限所属模块
     * @return
     */
    PageResult queryList(QueryObject qo);

    /**
     * 根据角色 id 查找所有权限列表
     * @return
     */
    List<Permission> selectByRoleId(Long roleId);

    /**
     * 为某个角色授新权限
     * @param roleId
     * @param permissionIdList
     */
    void authorizeForRole(Long roleId,List<Long> permissionIdList);

    /**
     * 通过员工 id 获取所有的权限
     * @param empId 员工 id
     * @return
     */
    List<Permission> selectListByEmpId(Long empId);

}
